package com.deluxelx.rmo.essay.domain.rule.logic;

import com.deluxelx.rmo.essay.model.bo.TreeNodeLine;
import com.deluxelx.rmo.essay.model.req.DecisionMakingReq;

import java.util.List;

/**
 * 规则过滤器接口（决策树决策关键），在与节点相连的多条链路中选择一条走下去
 */
public interface LogicFilter {

    /**
     * 根据（决策值和匹配规则）决定下一个节点（类似于在中转站，根据 decisionValue 和 treeNodeLineList 决定下一条路该怎么走）
     * @param decisionValue 决策值
     * @param treeNodeLineList 与节点相连的链路
     * @return 决策后的下一个节点ID（下一条路）
     */
    Long decisionMaking(String decisionValue, List<TreeNodeLine> treeNodeLineList);

    /**
     * 根据决策请求，获取本次请求的决策值 (decisionValue)
     * @param decisionMakingReq 决策请求
     * @return 决策值 (decisionValue)
     */
    String getDecisionValue(DecisionMakingReq decisionMakingReq);

}
